package concesionario.source;


import java.util.ArrayList;
import java.util.List;


import java.util.Date;

public class Coche {
    
    private String marca;
    private String modelo;
    private String matricula;
    private double preciodeCompra;
    private double preciodeVenta;
    private String estado;
    private Exposicion expo;
    public List<Reparacion> reparaciones=new ArrayList<Reparacion>();
    
    public Coche(String marcaC,String modeloC,String matriculaC,
            double pC,double pV, String est, Exposicion expo){
        
     this.marca=marcaC;
     this.modelo=modeloC;
     this.matricula=matriculaC;
     this.preciodeCompra=pC;
     this.preciodeVenta=pV;
     this.estado=est;
     this.expo=expo;
        
    }
    public Coche(){
    
     this.marca="";
     this.modelo="";
     this.matricula="";
     this.preciodeCompra=0.0;
     this.preciodeVenta=0.0;
     this.estado = "";
    
    }
    
    //Métodos para modificar los atributos del Cohe.
    
    public void setMarca(String marcaC){
    
      this.marca=marcaC;       
    
    }
    public void setModelo(String modeloC){
    
      this.modelo=modeloC;       
    
    }
    public void setMatricula(String matriculaC){
    
      this.matricula=matriculaC;       
    
    }
    public void setPrecioCompra(double pC){
    
      this.preciodeCompra=pC;       
    
    }
    public void setPrecioVenta(double pV){
    
      this.preciodeVenta=pV;       
    
    }
    public void setEstado(String est){
    
      this.estado=est;       
    
    }
    
    public void setExpo(Exposicion expo){
     
        this.expo=expo;
  
    }
     
    
    //Método para cambiar nuestro Coche de Exposición.
    
    public void moverExposicion(Exposicion expo){
    
      if (this.expo!=expo){
      
          Exposicion oldExpo=this.expo;
          this.expo=expo;
          if (expo!=null){
              expo.altaExposicion(this);
          }
          if(oldExpo!=null){
              expo.bajaExposicion(this);
          }
      }  
    }  
    
    public Exposicion getExpo(){   
    
        return this.expo;
    
    }
    
    
    //Métodos de Reparación
    
    public boolean buscarenReparacion(){
    
        //Buscar coche en reparacion.
       
        return this.estado.equals("enReparacion");
            
    }
    
    public void enviarReparar(){
        
       
      if(!buscarenReparacion()){  
        
      //cambiamos el estado a enReparacion.
        
        String est="enReparacion";
        
        setEstado(est);
        
        
      //Agregamos a la lista de reparaciones.
        
        Date fecha=new Date();
        
        boolean rta=false;
        String tipo="chapa";
    
        
        Reparacion rep=new Reparacion(rta,tipo,fecha.toString());
        reparaciones.add(rep);
        
      }else{
          
          throw new IllegalArgumentException();
   
      } 
    }
    
    public void reparar(){
    
        
        if(buscarenReparacion()){  
        
      //cambiamos el estado a enReparacion.
        
        String est="reparado";
        
        setEstado(est);
        
        
        //Modificamos la reparacion para ponerla Resuelta=true
        
        
        Date fecha=new Date();
        
        boolean rta=true;
        String tipo="chapa";
    
        
        Reparacion rep=new Reparacion(rta,tipo,fecha.toString());
        reparaciones.add(rep);
        
        
         
        
      }else{
          
          throw new IllegalArgumentException();
   
      }
    
        
    
    
    
    
    
    }
        
 
}
